#include <iostream>
#include <algorithm>
#include <unordered_map>

using namespace std;

const int N = 2e4 + 10;

int n;
int a[N], b[N];

int pos;
int disc[N * 2]; // 帮助离散化
unordered_map<int, int> id; // 原始值，离散之后的值

int f[N*2]; // 差分数组

int main()
{
	cin >> n;
	for(int i = 1; i <= n; i++)
	{
		cin >> a[i] >> b[i];
		disc[++pos] = a[i];
		disc[++pos] = b[i];
	}

	//离散化
	//排序+去重
	sort(disc + 1, disc + 1 + pos);
	// 如果想找到离散化之后的值，数组必须要去重
	pos = unique(disc + 1, disc + 1 + pos) - (disc + 1); 

	for(int i = 1; i <= pos; i++)
	{
		int x = disc[i];
		id[x] = i;
	}

	//离散化基础上做差分
	for(int i = 1; i <= n; i++)
	{
		//a[i]~b[i]
		int l = id[a[i]], r = id[b[i]];
		f[l]++; f[r]--;
	}

	//还原数组
	for(int i = 1; i <= pos; i++) f[i] += f[i - 1];

	//统计结果
	int ret = 0;
	for(int i = 1; i <= pos; i++)
	{
		int j = i;
		while(j <= pos && f[j] > 0) j++;
		//[i, j)
		ret += disc[j] - disc[i];
		i = j;
	}

	cout << ret << endl;

	return 0;
}

